import { Watcher } from "./other/Watcher";
import * as fs from 'fs';
import * as path from 'path';

/**
 * 棋谱类
 * 
 * 记录每个操作，重连、观战、复盘都需要用到
 * 是否要写入文件中还需要考虑
 */
export class ManualMgr {

    /** 操作记录 */
    list = new Array<String>();
    /** 当前的观战者们 */
    watchers = new Set<Watcher>();

    /**
     * 操作记录
     */
    record(json:String) {
        this.list.push(json);
        //通知观战者有数据更新
        this.watchers.forEach(watcher => {
            watcher.update()
        })
    }

    addWatcher(watcher:Watcher) {
        this.watchers.add(watcher);
    }

    /**
     * 游戏结束，将对局数据写入文件
     */
    saveManual() {
        let filePath = path.join(__dirname, '..', '..', '棋谱', 'manual.json');
        let json = JSON.stringify(this.list);
        // 使用 fs.writeFile 方法创建并写入 JSON 文件
        fs.writeFile(filePath, json, (err) => {
            if (err) {
                console.error('写入文件时出错:', err);
            } else {
                console.log('JSON 文件已成功创建:', filePath);
            }
        });
    }
}